package com.exam.controller;

import com.exam.entity.*;
import com.exam.serviceimpl.LoginServiceImpl;
import com.exam.util.ApiResultHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/** 登录
 */
@RestController
public class LoginController {

    @Autowired
    private LoginServiceImpl loginService;

    /** 登录
     * 根据用户输入的用户名密码，依次从admin、teacher、student表中查询用户是否存在
     * @param login 封装用户名密码为Login对象
     * @return 封装所有响应数据的对象
     */
    @PostMapping("/login")
    public ApiResult login(@RequestBody Login login) {

        Integer username = login.getUsername();
        String password = login.getPassword();

        //根据用户名密码从admin表中查询管理员
        Admin adminRes = loginService.adminLogin(username, password);
        //是管理员，以管理员身份登录
        if (adminRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", adminRes);  //传回此管理员对象adminRes
        }

        //若不是管理员，检查是不是老师
        Teacher teacherRes = loginService.teacherLogin(username,password);
        //是老师，以老师身份登录
        if (teacherRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", teacherRes);  //传回此老师对象teacherRes
        }

        //也不是老师，检查是不是学生
        Student studentRes = loginService.studentLogin(username,password);
        //是学生，以学生身份登录
        if (studentRes != null) {
            return ApiResultHandler.buildApiResult(200, "请求成功", studentRes);  //传回此学生对象studentRes
        }

        //非数据库中的有效用户，登录失败
        return ApiResultHandler.buildApiResult(400, "请求失败", null);
    }
}
